/**
 * @author ROGER DIAZ
 */
package laboratorio3;

//estas son las librerias que importo para trabajar
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class LeerFicheroTexto {

	public static void main(String[] args) {
            
            //uso Scanner para preguntarle al usuario cual de las dos clases logicas
            //"Postfix" o "PostfixB" se quiere usar para hacer el proceso
	 Scanner opciones= new Scanner(System.in);
        int opcion;
        
        //cosas que pongo en pantalla
             System.out.println("////////////Bienvenidos a la Calculadora de Postfix//////////////////");
             System.out.println("Escriba el numero de la opcion de programa que quiere probar");
             System.out.println("1.Postfix");
             System.out.println("2.PostfixB");
             
             //tomo la opcion que escriba
             opcion=opciones.nextInt();//lectura de dato ingresado.
             
             //si es opcion 1 se utiliza el "Postfix"
            if(opcion==1){
            try {
                //se crea FileReader, BuffereadReader, esto me va a servir para poder leer el archivo
                //el cual se debe declarar en el parentesis de FileReader
                //y debe de estar en la misma carpeta donde esten los programas
                //pero tambien se pudo haber escrito su direccion en computadora
			FileReader fr = new FileReader("fichero.txt");
			BufferedReader bf = new BufferedReader(fr);
                        //hago variable String para meter ahi las lineas
			String sCadena;
                        //creo mi objeto Postfix
                        Postfix pill= new Postfix();
                        //este ciclo es para ir leyendo linea por linea
                        //mientras hayan lineas que leer esto trabaja
			while ((sCadena = bf.readLine())!=null) {
                            
                            //esto me sirve para poder dividir la linea en direcciones especificas y asi tomar lo que necesito
				StringBuffer cadena= new StringBuffer (sCadena);
                                //hago reverse para que se mas adelante se meta todo al revez a la pila
                                //eso hara que al sacarlo lo vaya usando en el orden que tiene en el archivo de texto
                                cadena=cadena.reverse();
                                //esto me sirve de ayuda para saber cuantas veces meter cosas a la pila
                                int largolinea=cadena.length();
                                int indice=0;
                                //sirve para ir metiendo todos los caracteres a la pila
                                while(largolinea>indice){
                                    //esto me sirve para tomar los valores que necesito de la linea, guiandome del indice
                                String item=Character.toString(cadena.charAt(indice));
                                //ya que lo tengo en la variable item lo meto con el metodo de push
                                pill.push(item);
                                //se aumenta el indice en dos porque hay que ir saltando espacios entre caracteres
                                indice=indice + 2;
                                }
                                //luego solo opero lo que haya en la linea
                                pill.operar();
                                
                                //luego imprimo resultado
                                pill.imprimirPila();
                               
                                
                        }
                        
                        
		} 
                
                
                catch (FileNotFoundException fnfe){
			fnfe.printStackTrace();
		} 
                
                
                catch (IOException ioe){
			ioe.printStackTrace();
		}
                
                
	}

            
            if(opcion==2){
            try {
                //se crea FileReader, BuffereadReader, esto me va a servir para poder leer el archivo
                //el cual se debe declarar en el parentesis de FileReader
                //y debe de estar en la misma carpeta donde esten los programas
                //pero tambien se pudo haber escrito su direccion en computadora
			FileReader fr = new FileReader("fichero.txt");
			BufferedReader bf = new BufferedReader(fr);
                        //hago variable String para meter ahi las lineas
			String sCadena;
                        //creo mi objeto Postfix
                        Postfix pill= new Postfix();
                        //este ciclo es para ir leyendo linea por linea
                        //mientras hayan lineas que leer esto trabaja
			while ((sCadena = bf.readLine())!=null) {
                            
                            //esto me sirve para poder dividir la linea en direcciones especificas y asi tomar lo que necesito
				StringBuffer cadena= new StringBuffer (sCadena);
                                //hago reverse para que se mas adelante se meta todo al revez a la pila
                                //eso hara que al sacarlo lo vaya usando en el orden que tiene en el archivo de texto
                                cadena=cadena.reverse();
                                //esto me sirve de ayuda para saber cuantas veces meter cosas a la pila
                                int largolinea=cadena.length();
                                int indice=0;
                                //sirve para ir metiendo todos los caracteres a la pila
                                while(largolinea>indice){
                                    //esto me sirve para tomar los valores que necesito de la linea, guiandome del indice
                                String item=Character.toString(cadena.charAt(indice));
                                //ya que lo tengo en la variable item lo meto con el metodo de push
                                pill.push(item);
                                //se aumenta el indice en dos porque hay que ir saltando espacios entre caracteres
                                indice=indice + 2;
                                }
                                //luego solo opero lo que haya en la linea
                                pill.operar();
                                
                        
                                //luego imprimo resultado
                                pill.imprimirPila();
                                
                        }
		} 
                
                
                catch (FileNotFoundException fnfe){
			fnfe.printStackTrace();
		} 
                
                
                catch (IOException ioe){
			ioe.printStackTrace();
		}
                
                
	}
}
}


